
using System;
using System.Text;
using SpotifyGenNHibernate.CEN;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Exceptions;
using SpotifyGenNHibernate.EN.Spotify;

namespace SpotifyGenNHibernate.CAD.Spotify
{
        public partial class ContadorCAD : BasicCAD, IContadorCAD
        {
        public ContadorCAD() : base ()
        {
        }

        public ContadorCAD(ISession sessionAux) : base (sessionAux)
        {
        }



        public ContadorEN ReadOIDDefault (int IdContador)
        {
                ContadorEN contadorEN = null;

                try
                {
                        SesssionInitializeTransaction ();
                        contadorEN = (ContadorEN)session.Load (typeof(ContadorEN),
                                IdContador

                                );
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in ContadorCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }

                return contadorEN;
        }


        public ContadorEN ObtenerContador (int IdContador)
        {
                ContadorEN contadorEN = null;

                try
                {
                        SesssionInitializeTransaction ();
                        contadorEN = (ContadorEN)session.Load (typeof(ContadorEN),
                                IdContador

                                );
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in ContadorCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }

                return contadorEN;
        }

        public int CrearContador (ContadorEN contador)
        {
                try
                {
                        SesssionInitializeTransaction ();
                        if (contador.Usuario != null) {
                                contador.Usuario = (SpotifyGenNHibernate.EN.Spotify.UsuarioEN)session.Load (typeof(SpotifyGenNHibernate.EN.Spotify.UsuarioEN), contador.Usuario.Nombre);
                        }

                        session.Save (contador);
                        SessionCommit ();
                }

                catch (Exception ex) {
                        SessionRollBack ();
                        if (ex is ModelException)
                                throw ex;
                        throw new DataLayerException ("Error in ContadorCAD.", ex);
                }


                finally
                {
                        SessionClose ();
                }

                return contador.IdContador;
        }
        }
}
